import java.util.ArrayList;

import watercups.operators.WaterCupOperators;
import templates.Operator;
import templates.State;
import watercups.states.WaterCupState;
import algorithms.*;

public class MainClass {
	public static void main(String []args){
		ArrayList<Operator<WaterCupState>> waterCupOperators=WaterCupOperators.returnOperators();
		State<WaterCupState> waterCupInitialState=WaterCupState.initialState();
		ArrayList<State<WaterCupState>> waterCupFState=WaterCupState.fStates();
		
		/*Context<WaterCupState> context;
		context=new Context<WaterCupState>(new DepthStrategy<WaterCupState>());
		// context=new Context<WaterCupState>(new WidthStrategy<WaterCupState>()) ;
		context.executeStrategy(waterCupInitialState, waterCupFState, waterCupOperators, "log.txt");*/
		

		String WaterCupDepth="WaterCupDepth.txt";
		Context<WaterCupState> w1;
		w1=new Context<WaterCupState>(new DepthStrategy<WaterCupState>());
		w1.executeStrategy(waterCupInitialState, waterCupFState, waterCupOperators, WaterCupDepth);
		
		String WaterCupWidth="WaterCupWidth.txt";
		Context<WaterCupState> w2;
		w2=new Context<WaterCupState>(new WidthStrategy<WaterCupState>());
		w2.executeStrategy(waterCupInitialState, waterCupFState, waterCupOperators, WaterCupWidth);
		
		String WaterCupDepthI="WaterCupDepthI.txt";
		Context<WaterCupState> w3;
		w3=new Context<WaterCupState>(new LDepthStrategy<WaterCupState>());
		w3.executeStrategy(waterCupInitialState, waterCupFState, waterCupOperators, WaterCupDepthI);
		
		String WaterCupDepthL="WaterCupDepthL.txt";
		Context<WaterCupState> w4;
		w4=new Context<WaterCupState>(new IDepthStrategy<WaterCupState>());
		w4.executeStrategy(waterCupInitialState, waterCupFState, waterCupOperators, WaterCupDepthL);
	}

}
